import { defineStore } from 'pinia'
import useUserStore from './user'
import oAuth from '@/utils/oAuth'

export const useGlobalStore = defineStore('global', () => {

	const videoPlay = reactive({
		src: '',
		show: (src ?: string) => {
			if (src) videoPlay.src = src
			uni.navigateTo({ url: `/pages/video/video?src=${src}` })
		}
	})

	return {
		/** videoPlay 视频播放弹出页面 */
		videoPlay,
	}
});

export default useGlobalStore;

/**
 * token 的逻辑应该是这样的
 * 拿token，可以直接从storage中拿
 * 改token，就会引发整个系统的变化，需要监听
 */

/**
 * 以后token都不存在store中，要用直接从storage拿
 */
export const getToken = () : string => {
	return String(uni.getStorageSync('token'))
}
console.log('🐔初始token值: ', getToken());

/**
 * 设置token，并且重启到首页
 * @param token 从后端获取的用户令牌
 * @param to 登录后跳转到哪里，默认主页
 */
export const login = (token : string, to ?: string) : void => {
	uni.setStorageSync('token', token)
	useUserStore().isLogined = true
	uni.reLaunch({ url: to || '/' + getCurrentPages()[0].route || '/pages/index/index' })
}

/**
 * 退出登录
 * 删除token，重置相关store
 * todo: 去除所有第三方登录状态
 * 并重启到主页
 * todo: 如果后续有设置持久化，这里要加去除的逻辑
 * @param to 登录后跳转到哪里，默认主页
 */
export const logout = async (to ?: string) : Promise<void> => {
	uni.removeStorageSync('token')
	// 去除第三方登录状态
	await oAuth.logout()
	const User = useUserStore()
	User.isLogined = false
	User.reset()
	uni.reLaunch({ url: to || '/' + getCurrentPages()[0].route || '/pages/index/index' })
}